﻿#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow) {
  ui->setupUi(this);
  readSqlite();
}

void MainWindow::readSqlite() {
  // 配置数据库
  QSqlDatabase database;
  database = QSqlDatabase::addDatabase("QSQLITE");
  database.setDatabaseName("E:/BUAA/InstituteOfSoftware/QtSqliteReader/QtSqliteReader/MyDataBase.db"); // 添加数据库路径，若数据库不存在，则创建数据库
  database.setUserName("cchailong");
  database.setPassword("123456");

  // 数据库连接并查询
  if (!database.open()) {
    qDebug() << "Error: Failed to connect database." << database.lastError();
  } else {
    //可先将以下代码取消注释运行，创建表并插入数据，随后将该部分代码注释，只运行数据库查询操作
    //  //在数据库中创建表
    //  QSqlQuery sql_query;
    //  QString create_sql = "create table students(id int null, namevarchar(30), age int null)"; sql_query.prepare(create_sql);
    //  if(!sql_query.exec())
    //  {
    //      qDebug() << "Error: Fail to create table." << sql_query.lastError();
    //  }
    //  else
    //  {
    //      qDebug() << "Table created!";
    //  }

    //  //向数据库中插入数据
    //  sql_query.exec("insert into students values(1, \"Li\", 23)");
    //  sql_query.exec("insert into students values(2, \"Wang\", 19)");
    //  sql_query.exec("insert into students values(3, \"Zhang\", 24)");
    //  sql_query.exec("insert into students values(4, \"Liu\", 20)");
    //  sql_query.exec("insert into students values(5, \"Sun\", 21)");
    //  sql_query.exec("insert into students values(6, \"Chen\", 26)");

    //  // 查询数据库中的数据，通过debug输出
    //  QString select_all_sql = "select * from students"; // 查询指定表中的所有数据
    //  sql_query.prepare(select_all_sql);
    //  if (!sql_query.exec()) {
    //    qDebug() << sql_query.lastError();
    //  } else {
    //    while (sql_query.next()) {
    //      int id = sql_query.value(0).toInt();
    //      QString name = sql_query.value(1).toString();
    //      int age = sql_query.value(2).toInt();
    //      qDebug() << QString("%1   %2   %3").arg(id).arg(name).arg(age);
    //    }
    //  }

    //查询数据库中students表的数据，并在界面上显示
    QSqlTableModel *model = new QSqlTableModel(this);
    model->setTable("students");
    model->select();//查询整个表
    ui->tableView->setModel(model);
  }

  // 关闭数据库连接
  database.close();
}

MainWindow::~MainWindow() { delete ui; }
